//
//  NSDate+Extension.swift
//  weibo
//
//  Created by huxuedong on 15/12/12.
//  Copyright © 2015年 huxuedong. All rights reserved.
//

import Foundation

extension NSDate {
    
    //将微博的创建时间字符串转换成指定格式的NSDate
    class func createDate(createString: String) -> NSDate? {
        let formatter = NSDateFormatter()
        //“星期 月 日 时 分 秒 时区 年”
        formatter.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //指定本地化信息
        formatter.locale = NSLocale(localeIdentifier: "en_US")
        //微博创建时间(NSDate)
        let createDate = formatter.dateFromString(createString)
        return createDate
    }
    
    var createDateString: String {
        let formatter = NSDateFormatter()
        formatter.locale = NSLocale(localeIdentifier: "en_US")
        //获取当前日历
        let calendar = NSCalendar.currentCalendar()
        if isCurrentYear(self) {
            //判断日历是否为今天
            if calendar.isDateInToday(self) {
                //获取创建时间到现在的秒数
                let result = -self.timeIntervalSinceNow
                if result < 60 {
                    return "刚刚"
                } else if result < 60 * 60 {
                    return "\(Int(result) / 60)分钟前"
                } else {
                    return "\(Int(result) / (60 * 60))小时前"
                }
                //日历是否为昨天
            } else if calendar.isDateInYesterday(self) {
                formatter.dateFormat = "昨天 HH:mm"
            } else {
                formatter.dateFormat = "MM-dd HH:mm"
            }
        } else {
            formatter.dateFormat = "yyyy-MM-dd HH:mm"
        }
        return formatter.stringFromDate(self)
    }
    
    //判断是否为当前年
    private func isCurrentYear(date: NSDate) -> Bool {
        let currentDate = NSDate()
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yyyy"
        formatter.locale = NSLocale(localeIdentifier: "en_US")
        //创建时间字符串
        let createDateString = formatter.stringFromDate(date)
        //当前时间字符串
        let currentDateString = formatter.stringFromDate(currentDate)
        return (createDateString as NSString).isEqualToString(currentDateString)
    }
    
}
